css基础

(1) 在html中使用样式

  1. 内联样式
  2. 内部样式
  3. 外部样式

1-2内联样式和内部样式

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title> 
    <style>
        /* 内部样式 */
        .box {
           color: green;
           font-size: 30px; 
        }
    </style>
</head>

<body>
    <!-- 内联样式 -->
    <div style="border:1px solid;color:red;">
        内联样式
    </div>

    <div class="box">
        内部样式
    </div> 

</body>
</html>

3 外部样式

<!-- demo.html -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title> 
    <link rel="stylesheet" href="./demo.css">
</head>

<body>
    <!-- 内联样式 -->
    <div style="border:1px solid;color:red;">
        内联样式
    </div>

    <div class="box">
        内部样式
    </div> 

</body>
</html>

<!-- demo.css -->
.box {
	border:1px solid red;
	color: red;
}

(2) 几个简单的css样式

  1. border 边框
  2. width, height 宽高
  3. background-color 背景颜色
  4. font-size 字体大小
<!DOCTYPE html>
<html lang="en">
<style>
  div {
    border: 1px solid;
    font-size: 30px;
    width: 300px;
    height: 300px;
    background-color: grey;
  }
</style>
<body>
  <div>
    我爱web
  </div>
</body>
</html>

(3) 元素选择器

常用选择器

  1. 元素选择器
  2. id选择器
  3. 类选择器
  4. 群组选择器
  5. 后代选择器
  6. 子代选择器
  7. 兄弟选择器
  8. nth(n) 选择器
  9. :first-child (伪类选择器)
  10. :last-child (伪类选择器css3新增)
  11. :hover (伪类选择器)
  12. :visited (伪类选择器)
  13. :after (伪类选择器)
  14. css3新增选择器

1.元素选择器

<!DOCTYPE html>
<html lang="en"> 
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style> 
        div {
            border: 1px solid;
        }
        p {
            background-color: green;
        }

    </style>
</head> 
<body>
    <div>
        div1
    </div> 
    <div>
        div2
    </div> 
    <p>
        pppppppp
    </p> 

    <p>2342342</p>
</body>
</html>

2.id选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"> 
    <title>Document</title>
    <style>
        #div1 {
            color: red;
        }
        #div2 {
            color: green;
        } 
    </style>
</head>
<body>
    <div id="div1">
        div1
    </div>    

    <div id="div2">
        div2
    </div>      
</body>
</html>

3.class选择器

<!DOCTYPE html>
<html lang="en"> 
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .div1 {
            color: red;
        }
        .div2 {
            color: blue;
        }
    </style>
</head> 
<body>
    <div class="div1">
        div1
    </div> 
    <div class="div2">
        div2
    </div> 
    <p class="div1">
        pppppppp
    </p> 
</body>
</html>

4.群组选择器

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* .box {
            color: red;
        }
        #aa {
            color: red;
        }
        p {
            color: red;
        } */
        /* 以上可以使用群组选择器 */
        .box,#aa,p {
            color: red;
        }

    </style>
</head>

<body>
    <div class="box">
        div1
    </div>

    <div id="aa">
        div2
    </div>

    <p>
        pppp
    </p>
</body> 
</html>

5.后代选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"> 
    <title>Document</title>
    <style>
        /* 后代选择器 */
        .box1 .aa {color: red;}
        .box2 li {color: green;} 
    </style>
</head>
<body>
    <ul class="box1">
        <li class="aa">111</li>
        <li class="aa">111</li>
        <li class="aa">111</li>
    </ul>

    <ul class="box2">
        <li class="aa">2222</li>
        <li class="aa">2222</li>
        <li class="aa">2222</li>
    </ul> 
</body>
</html>

6. 子代选择器

<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    .box>.aa {
      border: 1px solid;
      width: 300px;
    }

    .box>p.aa {
      color: red;
    }
  </style>
</head>
<body>
  <div class="box">
    <div class="aa">
      <i>iiiii</i>
      <span>span</span>
    </div> 
    <p class="aa">
      这是p标签
    </p>
  </div>
</body>
</html>

7. 兄弟选择器

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .pp+.span {
      color: red;
    }
  </style>
</head>

<body>
  <h3>把.pp标签的下一个兄弟元素字体变成红色</h3>
  <div class="box">
    <div class="div">div标签</div>
    <p class="pp">p标签</p>
    <span class="span">span标签</span>
    <i>i标签</i>
  </div>
</body>
</html>   

<!-- 一个小技巧:除了第一个li,其它li加上边框 -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    li+li {
			border-bottom:1px solid #999;
      width: 100px;
    } 
  </style>
</head>
<body>
  <ul>
    <li>1xxx</li>
    <li>2xxx</li>
    <li>3xxx</li>
    <li>4xxx</li>
    <li>5xxx</li>
  </ul>
</body>
</html>

伪类选择器

8. :nth(n) 选择器

<!DOCTYPE html>
<html lang="en">
 <style>
   .item:nth-child(1) {
     color:red;
   }
   .item:nth-child(2) {
     color:gold;
   }
   .item:nth-child(3) {
     color:greenyellow;
   }
 </style>
<body>
  <div class="box">
    <p class="item">xxxx</p>
    <p class="item">xxxx</p>
    <p class="item">xxxx</p>
  </div>
</body>
</html>

<!-- 奇数和偶数 -->
<!DOCTYPE html>
<html lang="en">
 <style>
   /* 奇数 */
   .item:nth-child(odd) {
     color: blue;
   }
   /* 偶数 */
   .item:nth-child(even) {
     color: red;
   }
 </style>
<body>
  <div class="box">
    <p class="item">xxxx</p>
    <p class="item">xxxx</p>
    <p class="item">xxxx</p>
    <p class="item">xxxx</p>
  </div>
</body>
</html>

9. :first-child (第一个)

10. :last-child (最后一个 css3新增)

<!DOCTYPE html>
<html lang="en">
<style>
  li.item:first-child{
    color: red;
  }
  li.item:last-child {
    color: blue;
  }
</style>
<body>

  <ul class="list">
    <li class="item">xxxx</li>
    <li class="item">xxxx</li>
    <li class="item">xxxx</li>
    <li class="item">xxxx</li>
    <li class="item">xxxx</li>
  </ul>
</body>
</html>

11. :hover (移动到元素上)

12. :visited (访问过)

<!DOCTYPE html>
<html lang="en">
<style type="text/css">
  /* 未访问的链接 */
  a:link {
    color: #000;
  }
  /* 已访问的链接 */
  a:visited {
    color: #F00;
  }
  /* 鼠标在链接上 */
  a:hover {
    color: #0F0;
  }
  /* 点击元素 */
  a:active {
    color: #00F;
  } 
</style>

<body>
  <a href="http://www.baidu.com" target="_blank">百度</a>
  <a href="http://www.sina.com" target="_blank">新浪</a>
</body>
</html>

13. :after (伪类选择器)

<!DOCTYPE html>
<html>
<head>
  <style>
    p {
      width: 200px;
      height: 200px;
      border: 1px solid;
    }

    p:after {
      content: "疯狂编码中...";
    }
  </style>
</head>
<body>
  <p></p>
</body>
</html>

(4) 选择器优先级

样式可以继承, 相同的设置会覆盖

  1. 内联样式 > 内部样式 > 外部样式 (就近原则)
  2. !important > id选择器 > class选择器 > 元素选择器 > 通配符(*)选择器
  3. 都是class的情况下, 一般选择器越"长", 优先级越高
  4. !important能不用就不用, 因为用不好对维护会产生影响
<!-- 内联样式 > 内部样式 > 外部样式 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"> 
    <title>Document</title>
    <link rel="stylesheet" href="./demo6.css">
    <style>
        /* 内部样式 */
        .box {
            font-size: 30px; 
            border: 1px solid red;
        }
    </style>
</head>
<body> 
    <!-- 内联样式 -->
    <div class="box" style="color: red;font-size: 10px;">
        box 
    </div>

</body>
</html>
<!-- !important > id选择器 > class选择器 > 元素选择器 > 通配符选择器 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
      /* 将!important放在样式的后面, 不管它是什么选择器都会优先使用 */
       * {
        color: white!important;
       }
        #box {
            color: blue;
        }
        .box {
            color: green;
        }
        /* 元素选择器 */
        div {
           color: red; 
        } 
    </style>

</head>
<body>
    <div id="box" class="box">
        div
    </div>
</body>
</html>

(5) 作业

作业要求

  1. 尽量不使用元素选择器
  2. 在不给元素添加额外的id和class来完成任务
  3. 尽量使用多种方法达到目的

题目列表

  1. 给导航栏的选项的字体变成灰色, 并且第一个字体高亮(变红色)

    <!DOCTYPE html>
    <html lang="en"> 
      <body>
        <nav class="nav">
          <span class="item">1</span>
          <span class="item">2</span>
          <span class="item">3</span>
        </nav>
    
        <ul class="list">
          <li class="item">1</li>
          <li class="item">2</li>
          <li class="item">3</li>
        </ul>
      </body>
    </html>
    
  2. 把以下列表的最后一个标签去掉边框

    <!DOCTYPE html>
    <html lang="en"> 
      <head>
        <style>
          .item {
            width: 200px;
            border-bottom: 1px solid;
          } 
        </style>
      </head>
      <body>
        <ul class="list">
          <li class="item">1</li>
          <li class="item">2</li>
          <li class="item">3</li>
          <li class="item">4</li>
          <li class="item">5</li>
        </ul>
      </body>
    </html>
    
  3. 除了第一个以外, 给其他的列表标签添加上边框

    <!DOCTYPE html>
    <html lang="en">  
      <body>
        <ul class="list">
          <li class="item">1</li>
          <li class="item">2</li>
          <li class="item">3</li>
          <li class="item">4</li>
          <li class="item">5</li>
        </ul>
      </body>
    </html>
    
  4. 修改样式, 把文字变成绿色

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <style>
          /* 在这里写代码 */
          
    
          .box .span{
            color: red;
          } 
        </style>
      </head>
      <body>
        <div class="box">
          <p class="pp">
            <span class="span"> 这是一个span标签 </span>
          </p>
        </div>
      </body>
    </html>
    
  5. 修改样式, 把字体变成绿色

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <style>
          /* 在这里写代码 */
     
           
        </style>
      </head>
      <body>
        <div id="box">
          <p class="pp">
            <span class="span" style="color: red;"> 这是一个span标签 </span>
          </p>
        </div>
      </body>
    </html>
    
  6. 把class为item的div元素添加边框

    <!DOCTYPE html>
    <html lang="en"> 
      <body>
         <div class="item">
           这是div元素
         </div>
         <p class="item">
           这是p元素
         </p>
      </body>
    </html>
    
  7. 项目实战题(1) : 保存百度首页, 并且把百度的按钮背景色改为#c03131色, 输入框获得标点时, 也把边框改为#c03131

    image-20211206224927295

  8. 项目实战题(2): 修改代码, 把字体和字体底部的滚动跳变成#c03d37

    image-20211206230127530

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.14/vue.min.js"></script>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css" />
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>

<body>
    <div id="app">
        <el-tabs v-model="activeName" @tab-click="handleClick">
            <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
            <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
            <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
            <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
        </el-tabs>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                activeName: 'second'
            },
            methods: {
                handleClick(tab, event) {
                    console.log(tab, event);
                }
            }
        })
    </script>
</body>
</html>